/*
通过门栓+版本号 实现只由一个线程独占方法 （门栓、版本号均为volatile）
运行过程如下：


获取版本号
门栓不为空，调用门栓

前置判断
再判断版本号是否一致，再尝试加锁

进入线程独占方法

执行完毕之后需要版本号++
（释放门栓  可以延迟到后面释放，但是一定要保证释放）

*/